In TUGboat10#2 we presented a new scheme to select fonts in TEX macro packages. This article describes the use of this new scheme in the LATEX environment. The technical parts of the interface (which are of some interest to readers who plan to use our scheme with other fonts or with other macro packages) will be published in a separate article.
The necessary macros are distributed by the AMS together with the amstex.sty option which was announced in TUGboat10#3. The availability of the new font selection scheme at the usual servers will be announced separately in TEXhax, etc. Please refrain from asking for personal distribution.
To get a better understanding of this LATEX interface, some words on the organisation of font families are in order. Readers of our article about the basic macros will notice that our understanding of these matters increased while working on this interface and the -LATEX project; in some regards we have changed our point of view rather drastically. Surprisingly, only a few internal details within the basic macros needed adjustment; it seems that even without the real understanding, we instinctively got most of the things right when we designed them. (But probably we are still ignorant of the underlying concepts.)
In his book about ``Methods of Book Design'' Hugh Williamson writes [1]
[...] To the printer, an alphabet is a set of twenty-six letters of a certain design and body, together with a few additional combinations of letters. A fount is usually made up of a set of alphabets of one size and based on one design. It may consist of one alphabet only, if no more alphabets exist in that design and size. Usually however a text fount will comprise five alphabets — roman and italic upper and lower-case, and small capitals. [...] A series is a set of founts closely related to each other in design, and usually very similar to each other, but graded in size. If only one alphabet has been made in a certain design, that alphabet alone may be a series. A family is a group of series compatible for composition, but loosely related in design. A family may include excerpts from more than one series.
Since TEX's physical fonts (which is the American word for fount) all contain exactly two alphabets, namely the upper and lower-case alphabets of a certain design, we will use the word font for physical TEX fonts, and fount for bundles of TEX fonts consisting for example of roman (upright or normal), italic and small capitals shapes.
The above quotation gives a good clue how to organize fonts in our
font selection scheme. Hence we use the \fontshape
command
from the basic macros to distinguish between normal (n), italic (it),
small caps (sc), sloped or slanted (sl) and upright italic (u)
typefaces within one fount. Founts of different sizes form a series,
so we use \fontsize
to access these. We think that the weight
and the width of a series are good candidates to distinguish between
individual series, therefore we combine them in the
\fontseries
command. Again we use one and two letter
abbreviations as shown in table . One or more of
these series form a family which is accessed via the
\fontfamily
command.
|
To give some practical example, we arranged the most important families of the Computer Modern fonts according to this classification in table . Please note that some families like `computer modern funny roman' (cmff) or `computer modern sans serif quotation' (cmssq) are unclassified. These special purpose fonts are not accessible in the standard distribution of the new font selection scheme, although they could be added easily in a style file.
Given this overview about the classification of fonts it should be
clear how to select a specific font with the primitive commands
\fontfamily
, \fontseries
, \fontshape
,
\fontsize
, and
\selectfont
. As described in [5], the
size macro takes two arguments: the size
in printer's points as a numeral (i.e. without the
dimension) and the corresponding
baselineskip value (with a dimension).
selectfont finally selects the font using values of
the surrounding environment if some of the commands
are missing.
For example statements like ``Concrete roman condensed
slanted font at 9pt with 11pt leading''2 will
be translated into command sequences of the form:
\fontfamily{ccr}\fontseries{c}% \fontshape{sl}\fontsize{9}{11pt}% \selectfontThis will explicitly load the font mentioned above, provided the necessary font shapes are known to the system.3
However, in the normal case, the LATEX user can safely rely on the standard LATEX font selection commands defined in terms of these primitive commands. These standard commands are discussed in the next sections.